home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DS-CD ROM 2 1993 August
/
DS CD-ROM 2.Ausgabe (August 1993).iso
/
programm
/
ds0257
/
demo.exe
/
STACKS.DEM
< prev
next >
Wrap
Text File
|
1992-02-16
|
4KB
|
134 lines
; ----------------------------
; STACKS.DEM - Demoprogramm für die Macros aus STACKS.MAB
; (für den A86)
;
; (c) Bernd Schemmer 1990 - 1992
; Letzter Update: 15.02.1992
;
; Übersetzen:
; A86 MACROS.MAC STACKS.MAB STACKS.DEM DEMOS.INC TO STACKS.COM
; ---------------------------
jmp start ; Daten überspringen
logo db CR,LF
db 'STACKS.DEM - Demoprogramm für die Macros aus STACKS.MAB'
db CR,LF
db '--------------------------------------------------------'
db CR,LF
db CR,LF
GETLENGTH logo
; Fehlermeldung
;
MakeMsg StacksError, 'STACKS nicht gefunden!'
; Maske für die Ausgabe der Daten
;
_StackHeader db CR,LF
db 'Aufbau des Headers des STACKS-Bereichs: '
db CR,LF
db 'ID: '
_Stacks_IDWord db 'xxxxh',CR,LF
db 'Anzahl: '
_Stacks_Count db 'xxxxh',CR,LF
db 'Erster Stack: '
_Stacks_1Stack db 'xxxxh',CR,LF
db 'Länge eines Stacks: '
_Stacks_Length db 'xxxxh',CR,LF
db 'Rahmentabelle: '
_Stacks_FrameT db 'xxxxh:xxxxh',CR,LF
db 'Min.: '
_Stacks_MFrame db 'xxxxh',CR,LF
db 'Max.: '
_Stacks_XFrame db 'xxxxh',CR,LF
db CR,LF
db 'Daten der Stack-Frames:',CR,LF
_StacksBelegt db 'xxxxx belegte Stacks, '
_StacksFrei db 'xxxxx freie Stacks und '
_StacksGesp db 'xxxxx gesperrte Stacks.'
db CR,LF
db CR,LF
GETLENGTH _StackHeader
start:
call ShowLogo ; Logo ausgeben und Speicherblock verkleinern
TestDOSVersion 3,30 ; DOS-Version überprüfen
GetStacksData
jnc >l1
; STACKS nicht gefunden
WRITE_STRING StacksError
jmp Ende
l1:
mov ds,es ; DS:BX zeigt auf den Header des STACKS-Bereichs
mov es,cs ; ES = CS
; Maske füllen
mov ax,Stacks_IDWord
mov di,offset _Stacks_IDWord
call Konvert_AX_To_Hexstring
mov ax, Stacks_Count
mov di,offset _Stacks_Count
call Konvert_AX_To_Hexstring
mov ax,Stacks_1Stack
mov di,offset _Stacks_1Stack
call Konvert_AX_To_Hexstring
mov ax,Stacks_Length
mov di,offset _Stacks_Length
call Konvert_AX_To_Hexstring
mov ax,w Stacks_FrameT
push ax
mov ax,w Stacks_FrameT+2
mov di,offset _Stacks_FrameT
call Konvert_AX_To_Hexstring
pop ax
inc di,2
call Konvert_AX_To_Hexstring
mov ax,Stacks_MFrame
mov di,offset _Stacks_MFrame
call Konvert_AX_To_Hexstring
mov ax,Stacks_XFrame
mov di,offset _Stacks_XFrame
call Konvert_AX_To_Hexstring
; Rahmentabelle auswerten
mov cx,Stacks_Count
lds bx,Stacks_FrameT ; DS:BX -> Rahmentabelle
xor ax,ax
xor dx,dx
xor bp,bp
l0:
cmp Frame_ID,0 ; Stack frei?
if e inc ax
cmp Frame_ID,1 ; Stack belegt?
if e inc bp
cmp Frame_ID,3 ; Stack gesperrt?
if e inc dx
add bx,TYPE StackFrameArea
loop l0
mov di,offset _StacksFrei
call Konvert_AX_To_Dezstring
mov di,offset _StacksBelegt
mov ax,bp
call Konvert_AX_To_Dezstring
mov di,offset _StacksGesp
mov ax,dx
call Konvert_AX_To_Dezstring
mov ds,cs
WRITE_STRING _StackHeader
Ende:
EndProcess 0